# 验证Tasks模型字段赋值情况的脚本
import sys
from tasks.models import Tasks

print("开始验证数据字段赋值情况...")

# 查询最近插入的数据
try:
    # 获取最近插入的10条数据
    recent_tasks = Tasks.objects.order_by('-id')[:10]
    print(f"\n找到{len(recent_tasks)}条最近插入的数据：")
    
    # 检查每个字段的赋值情况
    for task in recent_tasks:
        print(f"\n任务ID: {task.task_id}, 名称: {task.task_name}")
        print(f"  预计开始时间: {task.fc_plan_start_time}")
        print(f"  预计结束时间: {task.fc_plan_end_time}")
        print(f"  实际开始时间: {task.fc_actual_start_time}")
        print(f"  实际结束时间: {task.fc_actual_end_time}")
    
    # 统计字段为空的情况
    null_plan_start = Tasks.objects.filter(fc_plan_start_time__isnull=True).count()
    null_plan_end = Tasks.objects.filter(fc_plan_end_time__isnull=True).count()
    
    print(f"\n统计信息:")
    print(f"总任务数: {Tasks.objects.count()}")
    print(f"预计开始时间为空的任务数: {null_plan_start}")
    print(f"预计结束时间为空的任务数: {null_plan_end}")
    
    if null_plan_start == 0 and null_plan_end == 0:
        print("\n✅ 验证通过！所有任务的预计开始时间和预计结束时间都已正确赋值。")
    else:
        print("\n❌ 警告：存在预计时间未赋值的任务。")
        
    # 创建新的数据确保所有字段都有值
    print("\n正在创建一条新的完整数据进行演示...")
    from datetime import datetime, timedelta
    import random
    
    today = datetime.now().date()
    plan_start = today + timedelta(days=random.randint(1, 30))
    plan_end = plan_start + timedelta(days=random.randint(5, 20))
    
    new_task = Tasks(
        epic_name='验证任务',
        story_name='字段验证',
        task_id=f'VERIFY{datetime.now().strftime("%Y%m%d")}',
        task_name='字段完整赋值验证任务',
        task_type='开发',
        project='WMS系统',
        fc_publish_version='v1.0',
        product_manager='张三',
        status='进行中',
        fc_responsible_person='开发者A',
        estimate_time=8.5,
        fc_plan_start_time=plan_start,
        fc_plan_end_time=plan_end,
        fc_actual_start_time=(today - timedelta(days=2)).strftime('%Y-%m-%d'),
        fc_actual_end_time=(today + timedelta(days=1)).strftime('%Y-%m-%d')
    )
    new_task.save()
    
    print(f"\n✅ 演示数据创建成功！")
    print(f"任务ID: {new_task.task_id}")
    print(f"预计开始时间: {new_task.fc_plan_start_time}")
    print(f"预计结束时间: {new_task.fc_plan_end_time}")
    print(f"实际开始时间: {new_task.fc_actual_start_time}")
    print(f"实际结束时间: {new_task.fc_actual_end_time}")
    
    print("\n验证完成！")
    
except Exception as e:
    print(f"验证过程出错: {e}")
    sys.exit(1)